﻿using GN.Pay.Application.GatewayApp.Dto.Input;
using GN.Pay.Application.GatewayApp.Dto.Output;
using System.Collections.Generic;

namespace GN.Pay.Application.GatewayApp
{
    /// <summary>
    /// 交易查询应用服务
    /// </summary>
    public interface ITradeQueryAppService : IGatewayAppService
    {
        /// <summary>
        /// 查询通道申请注册
        /// </summary>
        /// <param name="applyChannelId"></param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.TradeQuery.Trade_Query_Pay_Apply)]
        PayApplyOutput QueryPayApply(PayApplyKeyInput input);

        /// <summary>
        /// 交易通道查询
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.TradeQuery.Trade_Query_TradeChannel)]
        List<TradeChannelOutput> TradeChannelQuery(TradeChannelInput input);

        /// <summary>
        /// 交易订单查询
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.TradeQuery.Trade_Query_Order)]
        OrderQueryOutput TradeOrderQuery(OrderInput input);

        /// <summary>
        /// 同步交易支付通道
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.TradeQuery.Trade_Syn_Channel_Pay)]
        SynTradePayChannelOutput SynTradePayChannel(OrderInput input);
    }
}
